import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 沈明月
 * Date: 2022-11-07
 * Time: 14:56
 */
public class TestSix {
//只出现一次的数字
//给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素。
    public static int func(int [] array){
        int ret = array[0];
        for (int i = 0; i < array.length-1; i++) {
            int count = 0;
            for (int j = 0; j < array.length-1; j++) {
                if(array[j] == array[i]){
                    count ++;
                }
            }
            if(count == 1){
                ret = array[i];
                break;
            }
        }
        return ret;
    }
//法二：
    //异或的特点是：
    //1、n ^ n = 0；即两个相同的数字异或是0
    //2、0 ^ n = n；即0和任何数字进行异或，结果就是那个任何数字。
    public int singleNumber(int[] array) {
        // 用异或运算的性质可以巧妙的解决这个问题，因为数组中只有一个数字出现一次
        // 则其他出现两次的数字用异或运算后都是0，最终整个数组异或运算的结果即为所求。
        int ret = 0;
        for (int i : array) {
            ret ^= i;
        }
        return ret;
    }
    public static void main1(String[] args) {
        System.out.println("请输出创建的数组的总元素个数：");
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int [] array = new int [n];
        System.out.println("请依次输入数组中的各个元素（确保有一个元素只出现了一次）：");
        for (int i = 0; n >0 ; i++) {
            array[i] = scanner.nextInt();
            n--;
        }
        //进行查找：
        int ret = func(array);
        System.out.println("那个在数组中只出现了一次的数字是："+ret);
    }
}
